In signal processing, there is frequently a need for estimating the phase and/or the magnitude of a complex valued input or in-phase/quadrature (I/Q) data. As the data throughput in digital processing circuits increase, faster and more energy efficient estimators are required.
In existing systems, the magnitude may for instance be estimated by approximations of √{square root over (x2+y2)}. The approximations may however not always be as hardware efficient and/or accurate as desirable.
Existing hardware may employ a hardware implementation of the CORDIC algorithm (COordinate Rotation DIgital Computer) to estimate the phase of a complex input or of I/Q data. However, the iterative nature of the CORDIC algorithm translates to multiple iterations often being necessary to calculate the phase information to sufficient accuracy. This may introduce signal processing delays.
Another existing technique is to use a lookup table (LUT) (i.e. ROM, read only memory) to read the corresponding phase of the input, but this becomes impractical if the number of input bits are increasing, since the number of entries of the LUT will grow exponentially.
Another existing technique is to use an approximation of:
      arctan    ⁡          (              y        x            )        ≈      xy                  x        2            +                        (                                    1              4                        +                          1              32                                )                ⁢                  y          2                    
for calculating the phase of the (x, y) input. However, the cost in terms of computation is relatively high, requiring a multiplication operation, a squaring operation, a number of additions and division.